#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //实例：使用QTreeWidget
    //首先设置跟节点的内容
    ui->treeWidget->setHeaderLabel("动物");
    //创建顶层节点
    QTreeWidgetItem* item1 = new QTreeWidgetItem();
    //设置节点中的内容
    item1->setText(0,"狗");
    //添加到跟节点中
    ui->treeWidget->addTopLevelItem(item1);

    //创建顶层节点
    QTreeWidgetItem* item2 = new QTreeWidgetItem();
    //设置节点中的内容
    item2->setText(0,"猫");
    //添加到跟节点中
    ui->treeWidget->addTopLevelItem(item2);

    //创建顶层节点
    QTreeWidgetItem* item3 = new QTreeWidgetItem();
    //设置节点中的内容
    item3->setText(0,"鸟");
    //添加到跟节点中
    ui->treeWidget->addTopLevelItem(item3);

    //创建节点
    QTreeWidgetItem* item4 = new QTreeWidgetItem();
    //设置节点中的内容
    item4->setText(0,"哈士奇");
    //添加到节点中
    item1->addChild(item4);

    //创建节点
    QTreeWidgetItem* item5 = new QTreeWidgetItem();
    //设置节点中的内容
    item5->setText(0,"橘猫");
    //添加到节点中
    item2->addChild(item5);

    //创建节点
    QTreeWidgetItem* item6 = new QTreeWidgetItem();
    //设置节点中的内容
    item6->setText(0,"鹦鹉");
    //添加到节点中
    item3->addChild(item6);


}

Widget::~Widget()
{
    delete ui;
}


void Widget::on_pushButton_insettopleveitem_clicked()
{
    //获取输入框中的内容
    const QString& text = ui->lineEdit->text();
    //创建一个节点
    QTreeWidgetItem *item = new QTreeWidgetItem();
    //设置节点的内容
    item->setText(0,text);
    ui->treeWidget->addTopLevelItem(item);
}

void Widget::on_pushButton_insetItem_clicked()
{
    //首先获取到所选择节点的指针
    QTreeWidgetItem * cur = ui->treeWidget->currentItem();
    //获取输入框中的内容
    const QString& text = ui->lineEdit->text();
    //创建一个新的节点
    QTreeWidgetItem *item = new QTreeWidgetItem();
    //设置节点的内容
    item->setText(0,text);
    //将创建的新的节点插入到所选择的节点中
    cur->addChild(item);
}


void Widget::on_pushButton_deletItem_clicked()
{
    //首选获取到当前选中的元素
    QTreeWidgetItem * cur = ui->treeWidget->currentItem();
    //如何cur为空就返回
    if(cur==nullptr){return;}
    //如果preat 父亲为空那么就是顶层元素
    QTreeWidgetItem *prent = cur->parent();
    if(prent ==nullptr)
    {
        //顶层元素
        //首先获取顶层元素的下标
        int pow = ui->treeWidget->indexOfTopLevelItem(cur);
        ui->treeWidget->takeTopLevelItem(pow);
    }
    else
    {
        //普通元素
        prent->removeChild(cur);
    }
}
